Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prevent the full-file "error[E0601]: main function not found in crate" error #24

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

DusterTheFirst
Copy link

@DusterTheFirst DusterTheFirst commented Apr 1, 2021

The What

When using the #[async_attributes::main] macro and compiling a rust program with a syntax error in the main function, the user would be met with a big, intrusive, unhelpful error that there is no main function in the file. This can get very annoying, especially when paired with rust-analyzer and its on screen errors (taking up the whole file).

The Why

This error is caused when the main proc-macro fails to parse the inputted function with the syn::parse_macro_input!, causing it to return early, producing no main function.

The Fix

This PR uses the syn::parse function directly so that a parsing error can be caught, producing a placeholder empty main function to suppress the extraneous error. This placeholder main function will never be able to compile into a final executable since the macro also emits a compiler_error!.

@DusterTheFirst DusterTheFirst marked this pull request as ready for review April 1, 2021 21:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant